package com.hkts.beltweigher.utils;

import com.hkts.beltweigher.master.entity.YbRunAccumulate;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class ExportExcelUtil {
    /**
     * @Title: exportExcel
     * @Description: 导出Excel的方法
     * @param workbook
     * @param sheetNum (sheet的位置，0表示第一个表格中的第一个sheet)
     * @param sheetTitle  （sheet的名称）
     * @param headers    （表格的标题）
     * @param result   （表格的数据）
     * @throws Exception
     */
    public static Boolean exportExcel(XSSFWorkbook workbook, int sheetNum,
                               String sheetTitle, String[] headers, List<Map<String,String>> result) {
        Boolean res = false ;
        try{
            // 生成一个表格
            XSSFSheet sheet = workbook.createSheet();
            workbook.setSheetName(sheetNum, sheetTitle);
            // 设置表格默认列宽度为20个字节
            sheet.setDefaultColumnWidth((short) 20);
            // 生成一个样式
            XSSFCellStyle cellStyle = workbook.createCellStyle();
            cellStyle.setWrapText(true);

            // 生成一个字体
            Font headerFont = workbook.createFont();
            headerFont.setFontName("Arial");
            headerFont.setFontHeightInPoints((short) 10);
            headerFont.setBold(true);
            headerFont.setColor(IndexedColors.WHITE.getIndex());

            // 产生表格标题行
            XSSFRow row = sheet.createRow(0);
            for (int i = 0; i < headers.length; i++) {
                XSSFCell cell = row.createCell((short) i);
                XSSFRichTextString xssfRichTextString = new XSSFRichTextString(headers[i]);
                cell.setCellValue(xssfRichTextString.toString());
            }
            String i = "";
            // 遍历集合数据，产生数据行
            if (result != null) {
                int index = 1;
                for (Map<String, String> m : result) {
                    row = sheet.createRow(index);
                    for (int j = 0; j <headers.length ; j++) {
                        XSSFCell cell = row.createCell((short) j);
                        cell.setCellValue(m.get(headers[j]));
                        cell.setCellStyle(cellStyle);
                    }
                    index++;
                }
            }
            res = true;
        }catch (Exception e){
            e.printStackTrace();
        }
        return res;
    }

}
